//配置axios的全局基本路径
axios.defaults.baseURL='http://localhost:8080'

//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios

/*=====================拦截器=========================*/
//1 使用axios前置拦截器，让所有的请求都携带uToken
axios.interceptors.request.use(config=>{
    //携带token
    let uToken =  localStorage.getItem("token");
    if(uToken){
        config.headers['U-TOKEN']=uToken;
    }
    return config;
},error => {
    Promise.reject(error);
})

//2 使用axios后置拦截器，处理没有登录请求
axios.interceptors.response.use(result=>{
    let data = result.data;
    if(data.code === 401 && data.message==="noLogin"){
        location.href="login.html"
    }
    return result;
},error => {
    Promise.reject(error);
})

//3.静态资源拦截器
let url = location.href;
if (url.indexOf('/login') !== -1 || url.indexOf('/register') !== -1) {
    localStorage.removeItem('token');
    localStorage.removeItem('logininfo');
}
let user = JSON.parse(localStorage.getItem('logininfo'));
if (!user && url.indexOf('/login') === -1
    && url.indexOf('/register') === -1
    && url.indexOf('/index') === -1
    && url.indexOf('/callback') === -1
    && url.indexOf('/binder') === -1
    ){

    location.href="login.html"
}

//从回调地址url拿对象(callback.html中有使用)
// 封装公用方法 - 将字符串的参数解析为json对象
function parseUrlParams2Obj(url){//http://bugtracker.itsource.cn/?code=071m46ll2v5Rv94Hdxnl2Ux7ZB1m46lh&state=1
    let paramStr = url.substring(url.indexOf("?")+1);//code=071m46ll2v5Rv94Hdxnl2Ux7ZB1m46lh&state=1
    let paramStrs = paramStr.split("&");//[code=071m46ll2v5Rv94Hdxnl2Ux7ZB1m46lh,state=1]
    let paramObj = {};
    for(let i=0; i<paramStrs.length; i++){
        let paramName = paramStrs[i].split("=")[0];//code = 071m46ll2v5Rv94Hdxnl2Ux7ZB1m46lh
        let paramValue = paramStrs[i].split("=")[1];
        paramObj[paramName] = paramValue;//动态追加对象
    }
    return paramObj
}